package xyz.redtorch.client.strategy;

import xyz.redtorch.pb.CoreField.AccountField;
import xyz.redtorch.pb.CoreField.ContractField;
import xyz.redtorch.pb.CoreField.NoticeField;
import xyz.redtorch.pb.CoreField.OrderField;
import xyz.redtorch.pb.CoreField.PositionField;
import xyz.redtorch.pb.CoreField.TickField;
import xyz.redtorch.pb.CoreField.TradeField;

/**
 * @author Skywalker
 *
 */
public interface StrategyEngineService {

	void start();

	void addStrategy(StrategyTemplate strategy);

	void removeStrategy(String strategyId);

	void onTick(TickField tick);

	void onOrder(OrderField order);

	void onTrade(TradeField trade);

	void onNotice(NoticeField notice);

	void onContract(ContractField contract);

	void onAccount(AccountField account);

	void onPosition(PositionField position);

}
